<?
	/* Se asegura que el archivo es incluido por el index */
		defined( 'LOAD_MODULE_ACTION' ) or die( 'No esta permitido el acceso directo a ' . __FILE__ );
	/* Cuando se hace el include del archivo automaticamente crea un objeto y lo guarda en una variable temporal */
		$this->oTmpObject = new Generico_exe( $this );
	class Generico_exe extends Exe
	{
		var $oForm;
		var $aRow;
		var $cTabla;
	function Generico_exe( &$oModule )
		{
			// Convierte a variables los datos del Formulario asociado a la accion
			$this->oForm = $oModule->loadClass( 'generico_frm' );
			$this->oForm->initializeForm();
			$this->aRow =& $this->oForm->getFieldArray();
			list ( $cModule, $this->cTabla) = explode( '|', $this->aRow['cModuleTabla']);
			unset($this->aRow['cModuleTabla']);
			//
			$this->oModule =& loadModule($cModule);
		}
	function insert()
		{
			//Arma el array de PK
			if ( strpos(',', $this->oForm->getPrimaryField() ) === false )
			{
				$ncKey = $this->aRow[$this->oForm->getPrimaryField()] = $this->oModule->oDatabase->nextKey($this->cTabla, $this->oForm->getPrimaryField() );
			}
			// Agrega el Registro
			$this->oModule->oDatabase->insertArray($this->cTabla, $this->aRow  );
			if ( $ncKey  ) $this->setInputData( $ncKey , $this->aRow[$this->oForm->getDescriptionField()]  );
		}
	function update()
		{
			//Arma el array de PK
			$aPrimaryFields = explode ( ',',  $this->oForm->getPrimaryField());
			foreach( $aPrimaryFields as $cField )
			{
				$aPrimary[$cField] = $this->aRow[$cField] ;
				unset($this->aRow[$cField]);
			}
			// Modifica el Registro
			$this->oModule->oDatabase->updateArray($this->cTabla, $this->aRow, $aPrimary);
			if ( strpos(',', $this->oForm->getPrimaryField() ) === false )
			{
				$this->setInputData( $this->aRow[$this->oForm->getPrimaryField()] , $this->aRow[$this->oForm->getDescriptionField()]  );
			}
		}
	function delete()
		{
			//Arma el array de PK
			$aPrimaryFields = explode ( ',',  $this->oForm->getPrimaryField());
			foreach( $aPrimaryFields as $cField )
			{
				$aPrimary[$cField] = $this->aRow[$cField] ;
			}
			// Elimina el Registro
			$this->oModule->oDatabase->deleteArray($this->cTabla, $aPrimary);
		}
	}
?>
